/* 
 * StringUtil.java
 * 
 * Data de criação: 27/03/2010
 * 
 * CORPORATIVO - MTE. 
 *
 */
package br.com.o2solutions.util.lang;

import org.springframework.util.Assert;
import org.springframework.util.StringUtils;

/**
 * Classe responsável por realizar operacoes utilitarias sobre os objetos
 * strings. Toda a implementacao usa a api da Apache (http://www.apache.org/) e
 * Spring (http://www.springsource.org/).
 * 
 * @author osvaldeir
 * @since 27/03/2010
 * 
 */
public class StringUtil {

	/**
	 * Construtor
	 */
	private StringUtil() {
	}

	/**
	 * Retorna uma String convertida com o primeiro caracter em Maiusculo
	 * 
	 * @param strintToCapitalize
	 *            String a ser convertida
	 * @return String
	 */
	public static String capitalize(String strintToCapitalize) {
		Assert.notNull(strintToCapitalize,
				"A string a ser modificada nao pode ser nula");
		return StringUtils.capitalize(strintToCapitalize);
	}

	/**
	 * Realiza a operacao inversao do metodo
	 * {@link StringUtil#capitalize(String)}
	 * 
	 * @param stringToUncapitalize
	 *            String a ser convertida
	 * @return String
	 */
	public static String uncapitalize(String stringToUncapitalize) {
		Assert.notNull(stringToUncapitalize,
				"A string a ser modificada nao pode ser nula");
		return StringUtils.uncapitalize(stringToUncapitalize);
	}

	/**
	 * Remove todas as ocorrencias marcadas dentro de uma string
	 * 
	 * @param base
	 *            String base para a pesquisa
	 * @param toDelete
	 *            String a ser removida
	 * @return String
	 */
	public static String deleteAny(String base, String toDelete) {
		return StringUtils.deleteAny(base, toDelete);
	}

	/**
	 * Remove todos os espaços em branco das extremidades da string. Caso esta
	 * seja "" e retornado null.
	 * 
	 * @param string
	 * @return String
	 */
	public static String removeWhitespace(String string) {
		String newString = null;
		if (string != null) {
			newString = StringUtils.trimWhitespace(string);
			newString = "".equals(newString) ? null : newString;
		}
		return newString;
	}

	/**
	 * Retorna true caso a String seja igual a <code>null</code> ou, retirando
	 * seus espaços em branco do início e fim, seja igual a <code>""</code>.
	 * 
	 * @param string
	 *            String a ser verificada.
	 * @return boolean true caso a String não tenha outro caracter diferente de
	 *         " " ou seja igual a null.
	 */
	public static boolean isEmpty(String string) {
		return string == null || string.trim().length() == 0;
	}
}
